home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / plain / contrib / label.tex < prev    next >
Encoding:
Text File  |  1992-08-26  |  3.0 KB  |  138 lines

  1. %
  2. %   Either:
  3. %      \address 3
  4. %
  5. %   then enter three addresses, blank lines between them, or
  6. %
  7. %      \faddress foo.tex
  8. %
  9. %   where foo.tex contains a bunch of labels, with blank lines between them.
  10. %
  11. %   Make sure to use \done to exit, rather than \bye.
  12. %
  13. \hsize=8.25truein\hoffset=-0.875truein
  14. \vsize=11truein\voffset=-1.0truein
  15. \nopagenumbers\raggedbottom\offinterlineskip
  16. %
  17. \newdimen\vlsize\newdimen\hlsize
  18. \vlsize=1.56truein
  19. \hlsize=2.75truein
  20. %
  21. \font\huge=cmbx12 scaled\magstep 4
  22. \font\notsohuge=cmbx10 scaled\magstep3
  23. \font\bigtt=cmtt10 scaled 1200
  24. \font\lbls=cmbx10 scaled\magstephalf
  25. \font\hugelogo=logobf10 scaled\magstep 5
  26. \def\hugeMF{{\hugelogo METAFONT}}
  27. %
  28. \def\prompt{\immediate\write0{\noexpand\address\noexpand\faddress\noexpand\done}
  29.    \immediate\write0{<\number\labcount> Total Labels}}
  30. %
  31. \newcount\n
  32. \def\dotimes #1 #2{\n=#1
  33.    \loop
  34.       #2
  35.    \advance\n by -1
  36.    \ifnum\n>0\repeat}
  37. %
  38. \let\LMR=L
  39. \newbox\leftbox
  40. \newbox\midbox
  41. \newcount\labcount
  42. \labcount=0
  43. \def\ship#1{\if L\LMR
  44.       \global\setbox\leftbox=#1 \global\let\LMR=M
  45.    \else\if M\LMR
  46.       \global\setbox\midbox=#1 \global\let\LMR=R
  47.    \else
  48.       \line{\box\leftbox\hss\box\midbox\hss #1} \global\let\LMR=L
  49.    \fi\fi
  50.    \global\advance\labcount by1}
  51. %
  52. \def\emptybox{\vbox to \vlsize{\hsize=\hlsize\vfill\centerline{\strut}}}
  53. \def\done{\if M\LMR \ship\emptybox\ship\emptybox
  54.    \else\if R\LMR \ship\emptybox
  55.    \fi\fi\vfill\eject\end}
  56. %
  57. \def\oninterlineskip{\baselineskip=12pt\lineskip=1pt\lineskiplimit=0pt}
  58. %
  59. \newif\ifok
  60. \def\blankline{\par}
  61. \newif\ifcont
  62. %
  63. \newdimen\maxadsize
  64. \maxadsize=2.6truein
  65. \newbox\addbox
  66. \def\makeadd{\vbox{\oninterlineskip
  67.    \loop
  68.       \read0 to\add
  69.       \ifx\add\blankline
  70.          \global\contfalse
  71.       \else
  72.          \global\conttrue
  73.       \fi
  74.       \ifcont
  75.          \setbox\addbox=\hbox{\add}
  76.          \ifdim\maxadsize<\wd\addbox
  77.             \message{Line too wide!}
  78.          \else
  79.             \box\addbox
  80.          \fi
  81.    \repeat}}
  82. %
  83. \def\address #1 {\dotimes #1
  84.    {\ship{\vbox to \vlsize{\hsize=\hlsize
  85.        \oninterlineskip
  86.        \lbls
  87.        \vss\hbox to\hlsize{\hss
  88.           \makeadd
  89.        \hss}\vss}}}
  90.    \prompt}
  91. %
  92. \newread\filein
  93. \def\fakeadd{\vbox{\oninterlineskip
  94.    \loop
  95.       \read\filein to\add
  96.       \ifx\add\blankline
  97.          \global\contfalse
  98.       \else
  99.          \global\conttrue
  100.       \fi
  101.       \ifcont
  102.          \setbox\addbox=\hbox{\add}
  103.          \ifdim\maxadsize<\wd\addbox
  104.             \message{\add: }
  105.             \message{Line too wide!}
  106.          \else
  107.             \box\addbox
  108.          \fi
  109.    \repeat}}
  110. %
  111. \newif\ifstillokay
  112. \def\dofadds{
  113.    \loop
  114.       \ship{\vbox to \vlsize{\hsize=\hlsize
  115.          \oninterlineskip
  116.          \lbls
  117.          \vss\hbox to\hlsize{\hss\fakeadd\hss}
  118.       \vss}}
  119.       \ifeof\filein
  120.          \stillokayfalse
  121.       \else
  122.          \stillokaytrue
  123.       \fi
  124.       \ifstillokay
  125.    \repeat
  126.    \closein\filein}
  127. %
  128. \def\faddress #1 {
  129.    \openin\filein=#1
  130.    \ifeof\filein
  131.       \message{#1: File not found}
  132.    \else
  133.       \dofadds
  134.    \fi
  135.    \prompt}
  136. %
  137. \prompt
  138.